﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Phoenix.Xna.Framework.Components.Cameras
{
    public interface ICamera : IComponent, I3DComponent, I3DMoveable
    {
        float FOV { get; set; }
        float NearClip { get; set; }
        float FarClip { get; set; }
        BoundingFrustum Frustum { get; }
        Matrix View { get; }
        Matrix Projection { get; }
        Matrix ViewProjection { get; }
        Viewport Viewport { get; }
        int ZoomLevel { get; set; }
        Vector3 Target { get; set; }

        void LookAt();
        void LookAt(Vector3 target);
        void Activate();
        void ZoomIn();
        void ZoomOut();
    }
}
